home *** CD-ROM | disk | FTP | other *** search
- /*
- IC Switch Glue.c
-
- Code to handle switching between the use of the component and the use of the linked-in
- routines.
-
- I have implemented a small modification to the switch glue. Basically from code the switch
- can be controled to act in a certain manner. For example, the code to call the component can
- be turned off so that all calls made to the switch glue will always be handled by the linked in
- code. In fact, both the component and linked in code can be disabled causing the code to always
- return without doing anything to the prefs whatsoever.
-
- I also modified the routines to return paramErr if a null ICInstance is passed as a parameter.
- */
-
- #include <AppleTalk.h>
- #include <Aliases.h>
-
- // include types and key information
- #include "IC Types.h"
- #include "IC Keys.h"
-
- // include the main header for this file
- #include "IC API.h"
-
- // include the headers for the component and resource routines
- #include "IC Component API.h"
- #include "IC Resource API.h"
-
- // vars enabling/disabling the available code
- static Boolean gICSwitchCanUseComponent=true;
- static Boolean gICSwitchCanUseLinkIn=true;
-
- OSErr ICEnableComponent(void){
- gICSwitchCanUseComponent=true;
- return noErr;
- }
-
- OSErr ICDisableComponent(void){
- gICSwitchCanUseComponent=false;
- return noErr;
- }
-
- OSErr ICEnableLinkedCode(void){
- gICSwitchCanUseLinkIn=true;
- return noErr;
- }
-
- OSErr ICDisableLinkedCode(void){
- gICSwitchCanUseLinkIn=false;
- return noErr;
- }
-
- Boolean ICComponentEnabled(void){
- return gICSwitchCanUseComponent;
- }
-
- Boolean ICLinkedCodeEnabled(void){
- return gICSwitchCanUseLinkIn;
- }
-
- Boolean ICUsingComponent(ICInstance inst){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- // actually an error, but no way to return an error code
- if (inst==(ICInstance)0)
- return false;
-
- if (rp->instance!=(ComponentInstance)0)
- return true;
- return false;
- }
-
- ICError ICStart(ICInstance* inst,OSType creator){
- ICError err;
- ICRRecordPtr instr;
-
- instr=(ICRRecordPtr)NewPtr(sizeof(ICRRecord));
- err=MemError();
-
- if (err!=noErr)
- return err;
-
- if (gICSwitchCanUseComponent){
- err=ICCStart(&(instr->instance),creator);
- if ((err!=noErr)&&(gICSwitchCanUseLinkIn)){
- err=ICRStart(instr,creator);
- gICSwitchCanUseComponent=false;
- }
- } else {
- instr->instance=(ComponentInstance)0;
-
- if (gICSwitchCanUseLinkIn){
- err=ICRStart(instr,creator);
- if (err!=noErr)
- gICSwitchCanUseLinkIn=false;
- } else {
- err=icNotEnabled;
- }
- }
-
- if (err!=noErr){
- DisposePtr((Ptr)instr);
- *inst=(ICInstance)0;
- } else {
- *inst=(ICInstance)instr;
- }
-
- return err;
- }
-
- ICError ICStop(ICInstance inst){
- ICError err;
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0){
- err=ICCStop(rp->instance);
- } else {
- err=ICRStop(rp);
- }
-
- DisposePtr((Ptr)rp);
-
- return err;
- }
-
- ICError ICGetComponentInstance(ICInstance inst,Ptr* cip){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- *cip=(Ptr)rp->instance;
-
- if (*cip==(Ptr)0)
- return badComponentInstance;
-
- return noErr;
- }
-
- ICError ICFindConfigFile(ICInstance inst,short count,ICDirSpecArrayPtr folders){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCFindConfigFile(rp->instance,count,folders);
- return ICRFindConfigFile(rp,count,folders);
- }
-
- ICError ICFindUserConfigFile(ICInstance inst,ICDirSpec* where){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCFindUserConfigFile(rp->instance,where);
- return ICRFindUserConfigFile(rp,where);
- }
-
- ICError ICGeneralFindConfigFile(ICInstance inst,Boolean search_prefs,Boolean can_create,
- short count,ICDirSpecArrayPtr folders){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCGeneralFindConfigFile(rp->instance,search_prefs,can_create,count,folders);
- return ICRGeneralFindConfigFile(rp,search_prefs,can_create,count,folders);
- }
-
- ICError ICChooseConfig(ICInstance inst){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCChooseConfig(rp->instance);
- return ICRChooseConfig(rp);
- }
-
- ICError ICChooseNewConfig(ICInstance inst){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCChooseNewConfig(rp->instance);
- return ICRChooseNewConfig(rp);
- }
-
- ICError ICGetConfigName(ICInstance inst,Boolean longname,StringPtr name){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCGetConfigName(rp->instance,longname,name);
- return ICRGetConfigName(rp,longname,name);
- }
-
- ICError ICGetConfigReference(ICInstance inst,ICConfigRefHandle ref){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCGetConfigReference(rp->instance,ref);
- return ICRGetConfigReference(rp,ref);
- }
-
- ICError ICSetConfigReference(ICInstance inst,ICConfigRefHandle ref,long flags){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCSetConfigReference(rp->instance,ref,flags);
- return ICRSetConfigReference(rp,ref,flags);
- }
-
- ICError ICSpecifyConfigFile(ICInstance inst,FSSpecPtr config){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCSpecifyConfigFile(rp->instance,config);
- return ICRSpecifyConfigFile(rp,config);
- }
-
- ICError ICGetSeed(ICInstance inst,long* seed){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCGetSeed(rp->instance,seed);
- return ICRGetSeed(rp,seed);
- }
-
- ICError ICGetPerm(ICInstance inst,ICPerm* perm){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCGetPerm(rp->instance,perm);
- return ICRGetPerm(rp,perm);
- }
-
- ICError ICDefaultFileName(ICInstance inst,StringPtr name){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCDefaultFileName(rp->instance,name);
- return ICRDefaultFileName(rp,name);
- }
-
- ICError ICBegin(ICInstance inst,ICPerm perm){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCBegin(rp->instance,perm);
- return ICRBegin(rp,perm);
- }
-
- ICError ICGetPref(ICInstance inst,StringPtr key,ICAttr* attr,Ptr buf,long* size){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCGetPref(rp->instance,key,attr,buf,size);
- return ICRGetPref(rp,key,attr,buf,size);
- }
-
- ICError ICSetPref(ICInstance inst,StringPtr key,ICAttr attr,Ptr buf,long size){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCSetPref(rp->instance,key,attr,buf,size);
- return ICRSetPref(rp,key,attr,buf,size);
- }
-
- ICError ICFindPrefHandle(ICInstance inst,StringPtr key,ICAttr* attr,Handle prefh){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCFindPrefHandle(rp->instance,key,attr,prefh);
- return ICRFindPrefHandle(rp,key,attr,prefh);
- }
-
- ICError ICGetPrefHandle(ICInstance inst,StringPtr key,ICAttr* attr,Handle* prefh){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCGetPrefHandle(rp->instance,key,attr,prefh);
- return ICRGetPrefHandle(rp,key,attr,prefh);
- }
-
- ICError ICSetPrefHandle(ICInstance inst,StringPtr key,ICAttr attr,Handle prefh){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCSetPrefHandle(rp->instance,key,attr,prefh);
- return ICRSetPrefHandle(rp,key,attr,prefh);
- }
-
- ICError ICCountPref(ICInstance inst,long* count){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCCountPref(rp->instance,count);
- return ICRCountPref(rp,count);
- }
-
- ICError ICGetIndPref(ICInstance inst,long n,StringPtr key){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCGetIndPref(rp->instance,n,key);
- return ICRGetIndPref(rp,n,key);
- }
-
- ICError ICDeletePref(ICInstance inst,StringPtr key){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCDeletePref(rp->instance,key);
- return ICRDeletePref(rp,key);
- }
-
- ICError ICEnd(ICInstance inst){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCEnd(rp->instance);
- return ICREnd(rp);
- }
-
- ICError ICEditPreferences(ICInstance inst,StringPtr key){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCEditPreferences(rp->instance,key);
- return ICREditPreferences(rp,key);
- }
-
- ICError ICParseURL(ICInstance inst,StringPtr hint,Ptr data,long len,long* selStart,long* selEnd,Handle url){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCParseURL(rp->instance,hint,data,len,selStart,selEnd,url);
- return ICRParseURL(rp,hint,data,len,selStart,selEnd,url);
- }
-
- ICError ICLaunchURL(ICInstance inst,StringPtr hint,Ptr data,long len,long* selStart,long* selEnd){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCLaunchURL(rp->instance,hint,data,len,selStart,selEnd);
- return ICRLaunchURL(rp,hint,data,len,selStart,selEnd);
- }
-
- ICError ICMapFilename(ICInstance inst,StringPtr filename,ICMapEntry* entry){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCMapFilename(rp->instance,filename,entry);
- return ICRMapFilename(rp,filename,entry);
- }
-
- ICError ICMapTypeCreator(ICInstance inst,OSType fType,OSType fCreator,StringPtr filename,ICMapEntry* entry){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCMapTypeCreator(rp->instance,fType,fCreator,filename,entry);
- return ICRMapTypeCreator(rp,fType,fCreator,filename,entry);
- }
-
- ICError ICMapEntriesFilename(ICInstance inst,Handle entries,StringPtr filename,ICMapEntry* entry){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCMapEntriesFilename(rp->instance,entries,filename,entry);
- return ICRMapEntriesFilename(rp,entries,filename,entry);
- }
-
- ICError ICMapEntriesTypeCreator(ICInstance inst,Handle entries,OSType fType,OSType fCreator,StringPtr filename,ICMapEntry* entry){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCMapEntriesTypeCreator(rp->instance,entries,fType,fCreator,filename,entry);
- return ICRMapEntriesTypeCreator(rp,entries,fType,fCreator,filename,entry);
- }
-
- ICError ICCountMapEntries(ICInstance inst,Handle entries,long* count){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCCountMapEntries(rp->instance,entries,count);
- return ICRCountMapEntries(rp,entries,count);
- }
-
- ICError ICGetIndMapEntry(ICInstance inst,Handle entries,long ndx,long* pos,ICMapEntry* entry){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCGetIndMapEntry(rp->instance,entries,ndx,pos,entry);
- return ICRGetIndMapEntry(rp,entries,ndx,pos,entry);
- }
-
- ICError ICGetMapEntry(ICInstance inst,Handle entries,long pos,ICMapEntry* entry){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCGetMapEntry(rp->instance,entries,pos,entry);
- return ICRGetMapEntry(rp,entries,pos,entry);
- }
-
- ICError ICSetMapEntry(ICInstance inst,Handle entries,long pos,ICMapEntry* entry){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCSetMapEntry(rp->instance,entries,pos,entry);
- return ICRSetMapEntry(rp,entries,pos,entry);
- }
-
- ICError ICDeleteMapEntry(ICInstance inst,Handle entries,long pos){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCDeleteMapEntry(rp->instance,entries,pos);
- return ICRDeleteMapEntry(rp,entries,pos);
- }
-
- ICError ICAddMapEntry(ICInstance inst,Handle entries,ICMapEntry* entry){
- ICRRecordPtr rp=(ICRRecordPtr)inst;
-
- if (inst==(ICInstance)0)
- return paramErr;
-
- if (rp->instance!=(ComponentInstance)0)
- return ICCAddMapEntry(rp->instance,entries,entry);
- return ICRAddMapEntry(rp,entries,entry);
- }
-